<?xml version="1.0" encoding="UTF-8"?>
<html>
    <head>
        <link type="text/css" rel="stylesheet" href="./css/template.css" />
        <link type="text/css" rel="stylesheet" href="./css/SyntaxHighlighter.css" />
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>D�buter avec les Applets Java</title>
        <script language="javascript" src="./js/shInit.js" />
        <script language="javascript" src="./js/shCore.js" />
        <script language="javascript" src="./js/shBrushCpp.js" />
        <script language="javascript" src="./js/shBrushCSharp.js" />
        <script language="javascript" src="./js/shBrushCss.js" />
        <script language="javascript" src="./js/shBrushDelphi.js" />
        <script language="javascript" src="./js/shBrushJava.js" />
        <script language="javascript" src="./js/shBrushJScript.js" />
        <script language="javascript" src="./js/shBrushPhp.js" />
        <script language="javascript" src="./js/shBrushPython.js" />
        <script language="javascript" src="./js/shBrushRuby.js" />
        <script language="javascript" src="./js/shBrushSql.js" />
        <script language="javascript" src="./js/shBrushVb.js" />
        <script language="javascript" src="./js/shBrushXml.js" />
        <keywords>applet</keywords>
        <author>Julie Muesser</author>
    </head>
    <body>
        <div class="chapter">
            <h2>1. Introduction</h2>
            <p>
                Cet article a pour but de vous pr�senter les applets en java. A la fin de ce petit tutorial vous serez donc capable de cr�er une applet et l'ins�rer dans votre page web.
                <br />
                Le langage Java  permet de concevoir deux types de programmes : les applications autonomes et les applets.
                <br />
                <br />
                Une application autonome est une application classique, qui s'ex�cute sous le contr�le direct du syst�me d'exploitation.
                <br />
                Une applet est une application qui est charg�e par un navigateur (ou un appletviewer) et qui s'ex�cute sous le contr�le de celui-ci.
                <br />
                <br />
                Une applet est un programme Java s'ex�cutant sur une page WEB. Ce sont en fait des bytecodes que vous t�l�chargez, puis s'ex�cutez sur votre propre machine.
				Pour ex�cuter une applet, vous devrez disposer d'un navigateur WEB (par exemple Internet Explorer ou Netscape).
            </p>
        </div>
        <div class="chapter">
            <h2>2. Le cycle de vie d'une Applet</h2>
            <div class="subChapter">
                <h3>2.1. Pr�sentation</h3>
                <p>
                    Pour cr�er une applet, il faut cr�er une sous classe de la classe java.applet.Applet et red�finir ses m�thodes. Les applets n'ont pas de fonction main(), elles utilisent des
					m�thodes qui sont appel�es par le navigateur lorsque des �v�nements sp�cifiques surviennent durant leur fonctionnement.
                    <br />
                    <br />
                    Cette classe sera la classe de l'applet, c'est elle dont le nom doit figurer dans le champ code du tag
                    <b>&lt;APPLET&gt;</b>
                    de la page HTML. Les m�thodes de la classe de l'applet permettent de : 
                </p>
                <ul>
                    <li>R�cup�rer et g�rer les param�tres</li>
                    <li>Avoir des images</li>
                    <li>Avoir et jouer des s�quences sonores</li>
                    <li>Interagir avec le navigateur</li>
                    <li>G�rer proprement les �v�nements du cycle de vie de l'applet</li>
                </ul>
            </div>
            <div class="subChapter">
                <h3>2.2. Ce que fait le navigateur</h3>
                <p>
                    Un navigateur g�re les �l�ments qu'il a charg� � l'aide d'une pile. Au sommet de celle-ci se trouve le document en cours d'interpr�tation par le navigateur, c'est-�-dire la page
					visualis�e par l'utilisateur.
                    <br />
                    Une page HTML aura donc deux �tats :
                </p>
                <ul>
                    <li>
                        <b>Active</b>
                         : elle est au sommet de la pile
                    </li>
                    <li>
                        <b>Inactive</b>
                         : elle n'est pas au sommet de la pile
                    </li>
                </ul>
                <p>Lorsque dans une page active le navigateur rencontre la marque &lt;APPLET CODE=  " Nom_de_classe "&gt; il charge le pseudo code de la classe sp�cifi�e puis il essaie d'ex�cuter l'applet. </p>
                <b>
                    <i />
                </b>
                <p>
                    <b>
                        <i>Chargement du pseudo code</i>
                    </b>
                </p>
                <p>
                    Les navigateurs reconnaissant Java peuvent ajouter des d�finitions de classes � leur code lors de leur ex�cution.
					C'est ce qui se passe lorsqu'une classe d'applet est charg�e, il faut noter que c'est l'environnement d'ex�cution Java du
					navigateur qui ex�cute cela, la classe charg�e devenant partie int�grante du syst�me d'ex�cution.
                    <br />
                    <br />
                    Le navigateur cr�e une instance de la classe de l'applet en utilisant le constructeur par d�faut de cette classe, ce constructeur par
					d�faut peut �tre surcharg�. C'est cette instance qui est r�f�renc�e par le mot
                    <i>this</i>
                    dans le texte de la classe de l'applet.
                </p>
                <b>
                    <i />
                </b>
                <p>
                    <b>
                        <i>Cycle de vie d'une Applet</i>
                    </b>
                </p>
                <p>Une fois construit, l'objet Applet peut avoir trois �tats :</p>
                <ul>
                    <li>
                        <b>Initialis�</b>
                        : D�s que l'objet est construit, la machine virtuelle Java lui applique la m�thode
                        <i>
                            <b>init()</b>
                        </i>
                        qui le fait passer dans l'�tat initialis�.
                    </li>
                    <li>
                        <b>Actif</b>
                         : si la page Web qui r�f�rence l'objet est active.
                    </li>
                    <li>
                        <b>Inactif</b>
                         : si la page Web qui r�f�rence l'objet se trouve inactive.
                    </li>
                </ul>
                <p>
                    Le programmeur a la possibilit� de surcharger les m�thodes
                    <b>
                        <i>init()</i>
                    </b>
                    ,
                    <b>
                        <i>start()</i>
                    </b>
                    ,
                    <b>
                        <i>stop()</i>
                    </b>
                    et
                    <b>
                        <i>destroy()</i>
                    </b>
                    qui sont appel�es
					� chaque changement d'�tat comme l'indique la figure qui suit. Ces m�thodes sont h�rit�es par toute classe fille de la classe Applet, elles sont vides lorsqu'on en h�rite.
                </p>
                <p>
                    <img src="./images/1.jpg" />
                </p>
                <p>
                    Les m�thodes
                    <b>
                        <i>start()</i>
                    </b>
                    et
                    <b>
                        <i>stop()</i>
                    </b>
                    peuvent �tre appel�es plusieurs fois pendant la dur�e de vie d'une applet (lorsque la navigateur quitte le contexte graphique de l'applet et y revient par exemple).
					La m�thode
                    <b>
                        <i>paint()</i>
                    </b>
                    prend en charge toutes les modifications du contexte graphique li� � l'applet, elle est appel�e � chaque fois que l'applet devient active.
                </p>
            </div>
            <div class="subChapter">
                <h3>2.3. Description des diff�rentes m�thodes</h3>
                <p>
                    <b>void destroy()</b>
                    <br />
                    M�thode appel�e par le navigateur lorsque l'applet ne sert plus, pour lib�rer les ressources. 
                </p>
                <p>
                    <b>void init()</b>
                    <br />
                    M�thode appel�e par le navigateur lorsque l'applet est charg�e. Cette m�thode rassemble toutes les initialisations n�cessaires � l'applet.
					Elle est comparable � un constructeur. En principe, une applet doit traiter les valeurs PARAM pass�e dans le code HTML et ajouter les composants de l'interface utilisateur. 
                </p>
                <p>
                    <b>void setSize(int width, int height)</b>
                    <br />
                    Change les dimensions de l'applet en fixant une nouvelle longueur et largeur. Cette m�thode ne fonctionne pas toujours correctement avec tous les navigateurs.
                </p>
                <p>
                    <b>void start()</b>
                    <br />
                    M�thode appel�e par le navigateur pour demander l'activation de l'applet apr�s l'appel de la m�thode init. Elle est appel�e chaque fois que l'utilisateur revient � la page contenant l'applet apr�s avoir parcouru d'autres pages.
                </p>
            </div>
        </div>
        <div class="chapter">
            <h2>3. Structure et El�ments d'une Applet</h2>
            <div class="subChapter">
                <h3>3.1. Extension de classe</h3>
                <p>
                    La classe Applet est la derni�re classe d'une suite de d�rivations, par suite lorsque le programmeur d�rive cette classe pour cr�er ses propres applets il peut utiliser un grand nombre de services.
                    <br />
                    La plupart des classes de quelque complexit� �tendent d'autres classes.
                    <br />
                    <br />
                    Etendre une autre classe consiste � �crire une nouvelle classe qui peut utiliser les champs et les m�thodes d�finies dans la classe �tendue. La classe �tendue est la classe parente, et la classe faisant l'extension est la classe fille.
                    <br />
                    <br />
                    Une autre fa�on d'exprimer cela est de dire que la classe fille h�rite des champs et des m�thodes de son parent ou de sa cha�ne de parents. Les classes filles soit invoquent, soit recouvrent les m�thodes h�rit�es.
					C'est ce qu'on appelle l'h�ritage simple.
                    <br />
                    <br />
                    Le sch�ma ci-dessous pr�sente les classes dont d�rive la classe Applet :
                </p>
                <p>
                    <img src="./images/2.jpg" />
                </p>
            </div>
            <div class="subChapter">
                <h3>3.2. Description des classes</h3>
                <p>
                    <b>Object</b>
                    : C'est la classe m�re de toutes les classes java. En java toutes les classes sont descendantes de la classe Object et peuvent donc utiliser les m�thodes dont elles h�ritent.
                </p>
                <p>
                    <b>Component</b>
                    : C'est la classe de base des objets graphiques qui peuvent �tre affich�s � l'�cran et qui peuvent interagir avec l'utilisateur.
                </p>
                <p>
                    <b>Container</b>
                    : permet de d�finir des objets composants conteneurs d'autres composants.
                    <br />
                    Il poss�de une liste des objets contenus et un gestionnaire de mise en forme pour ces objets (layout manager) d�terminant leurs places dans le conteneur et leurs dimensions.
                </p>
                <p>
                    <b>Panel</b>
                    : permet de d�finir des objets composants conteneurs d'autres composants. La diff�rence avec Container et Component est que ces deux derni�res sont des classes abstraites et ne peuvent
					pas �tre instanci�es alors que Panel peut l'�tre, offrant ainsi une version. minimale de conteneur, le gestionnaire de mise en forme par d�faut �tant de type
                    <i>FlowLayout</i>
                    .
                </p>
                <p>
                    <b>Applet :</b>
                    Cette classe permet de d�finir des objets panels particuliers embarqu�s dans un navigateur pouvant les afficher.
                    <br />
                    L'applet impl�mente un certain nombre de m�thodes qui peuvent �tre appel�es par le navigateur.
                </p>
            </div>
        </div>
        <div class="chapter">
            <h2>4. Ecriture simple d'une Applet</h2>
            <div class="subChapter">
                <h3>4.1. Exemple</h3>
                <p>Voici un exemple d'une applet tr�s simple</p>
                <textarea name="code" class="java">import java.applet.*
					import java.awt.*
					public class hello_world extends Applet {
					Label helloLabel = new Label(� Bonjour tout le monde�);
					//M�thode appel�e par le navigateur lorsque l'applet est charg�e
					public void init() {
					setBackGround(Color.yellow);
					add(helloLabel) 
					}//init()
					}//class hello_world</textarea>
                <p>
                    Pour qu'elle puisse �tre compil�e, un fichier applet doit
					�tre suffix� par
                    <b>.java</b>
                    .
                    <br />
                    L'applet
                    <b>hello_world</b>
                    sera enregistr�e sous le nom de
                    <b>hello_world.java</b>
                    .
                </p>
            </div>
            <div class="subChapter">
                <h3>4.2. Quelques explications sur le code source</h3>
                <textarea name="code" class="java">import java.applet.*
					import java.awt.*</textarea>
                <p>
                    Ces deux lignes signifient que l'on va utiliser les librairies standard
                    <b>java.applet</b>
                    et
                    <b>java.awt</b>
                    qui contiennent respectivement les classes pour construire des applets et des interfaces graphiques.
                </p>
                <textarea name="code" class="java">public class hello_world extends Applet</textarea>
                <p>
                    La classe
                    <b>
                        <i>hello_world</i>
                    </b>
                    h�rite de la classe Applet.
                </p>
                <textarea name="code" class="java">Label helloLabel = new Label(� Bonjour tout le monde�);</textarea>
                <p>Une �tiquette est ajout�e en attribut de la classe, celle-ci contiendra le texte ins�r� entre les guillemets.</p>
                <textarea name="code" class="java">public void init() {
					setBackGround(Color.yellow);
					add(helloLabel) 
					}//init()</textarea>
                <p>La m�thode init est celle qui est appel�e � la cr�ation de l'applet. Ici, elle va donner une couleur de fond jaune � l'applet et ins�rer l'�tiquette helloLabel.</p>
            </div>
            <div class="subChapter">
                <h3>4.3. Compilation d'une Applet</h3>
                <p>
                    La compilation est lanc�e par la commande
                    <b>javac</b>
                    suivie du nom du fichier source.
                </p>
                <textarea name="code" class="java">Javac MonProg.java</textarea>
                <p>Cette instruction provoque la compilation du fichier, mais elle ne cr�e pas de fichier ex�cutable, mais des fichiers semi-compil�s.
					Elle en cr�e autant qu'il y a de classes d�finies dans le fichier source.</p>
                <p>
                    Une fois compil� :
                    <b>MonProg.class</b>
                    est destin� � �tre incorpor� dans un document HTML.
                </p>
            </div>
        </div>
        <div class="chapter">
            <h2>5. Int�gration d'une Applet dans une page HTML</h2>
            <div class="subChapter">
                <h3>5.1. Exemple</h3>
                <p>Les applets sont appel�es � partir d'une source HTML lu � distance par votre navigateur.</p>
                <textarea name="code" class="java">
                    test de l'applet hello_world
					&lt;\TITLE&gt;
					&lt;\HEAD&gt;
					texte
                    <applet code="�hello_world.class�" width="150" height="100" align="left">&lt;\APPLET&gt; texte
						&lt;\BODY&gt;
						&lt;\HTML&gt;</applet>
                </textarea>
                <p>Le marqueur HTML &lt;APPLET ...&gt;&lt;\APPLET&gt; donne le nom de l'applet � ex�cuter.</p>
            </div>
            <div class="subChapter">
                <h3>5.2. Attributs pour le marqueur Applet</h3>
                <p>Voici la liste des attributs que l'on peut utiliser pour le marqueur APPLET :</p>
                <table cellpadding="0">
                    <tbody>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p />
                                <h2>ATTRIBUT</h2>
                            </td>
                            <td valign="top">
                                <p />
                                <h2>description</h2>
                            </td>
                        </tr>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p>ALT=" ? "</p>
                            </td>
                            <td valign="top">
                                <p>Le texte entre guillemets est ce qui appara�t si le navigateur visualisant la page n'est pas capable de lancer des applets java</p>
                            </td>
                        </tr>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p>ALIGN =?</p>
                            </td>
                            <td valign="top">
                                Contr�le comment l'applet doit s'aligner avec le texte
                                <p />
                            </td>
                        </tr>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p>HEIGHT = ?</p>
                            </td>
                            <td valign="top">
                                <p>Contr�le la dimension verticale de l'espace �cran r�serv� � l'applet</p>
                            </td>
                        </tr>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p>WIDTH = ?</p>
                            </td>
                            <td valign="top">
                                <p>Contr�le la dimension horizontale de l'espace �cran r�serv� � l'applet</p>
                            </td>
                        </tr>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p>HSPACE = ?</p>
                            </td>
                            <td valign="top">
                                <p>Ajoute de l'espace suppl�mentaire � la droite ou � la gauche de l'applet, entre l'espace de l'applet et le texte adjoint.</p>
                            </td>
                        </tr>
                        <tr bgcolor="#CCCCFF">
                            <td valign="top">
                                <p>VSPACE = ?</p>
                            </td>
                            <td valign="top">
                                <p>Ajoute de l'espace suppl�mentaire au-dessous de l'applet, entre l'espace de l'applet et le texte adjoint.</p>
                            </td>
                        </tr>
                    </tbody>
                </table>
                <p>
                    Vous pouvez essayer de remplacer dans votre feuille HTML la valeur left de l'attribut ALIGN successivement par les valeurs
                    <b>right</b>
                    ,
                    <b>top</b>
                    et
                    <b>bottom</b>
                    en testant son effet sur votre
					feuille HTML � partir de votre navigateur apr�s chaque modification.
                </p>
            </div>
        </div>
    </body>
</html>

